package com.kingyun.gpsinspection.purificationservice.services.iam.innerservice.scyx.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cqhilink.api.common.utils.UniqueUtil;
import com.kingyun.gpsinspection.purificationservice.common.enums.FileTypeEnum;
import com.kingyun.gpsinspection.purificationservice.dao.mapper.iam.IamFileMapper;
import com.kingyun.gpsinspection.purificationservice.dao.mapper.iam.scyx.ProjectSummaryDocMapper;
import com.kingyun.gpsinspection.purificationservice.facade.model.BootstrapSearchBean;
import com.kingyun.gpsinspection.purificationservice.facade.model.File;
import com.kingyun.gpsinspection.purificationservice.facade.model.iam.scyx.ProjectSummaryDoc;
import com.kingyun.gpsinspection.purificationservice.facade.service.iam.scyx.ProjectSummaryDocService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * Created by yangsy on 2016/12/22.
 */
public class ProjectSummaryDocServiceImpl implements ProjectSummaryDocService {
    @Autowired
    private ProjectSummaryDocMapper projectSummaryDocMapper;
    @Autowired
    private IamFileMapper iamFileMapper;

    @Override
    public int deleteByPrimaryKey(String projectId) {
        return projectSummaryDocMapper.deleteByPrimaryKey(projectId);
    }

    @Override
    public int insert(ProjectSummaryDoc record) {
        return projectSummaryDocMapper.insert(record);
    }

    @Override
    public int insertSelective(ProjectSummaryDoc record) {
        return projectSummaryDocMapper.insertSelective(record);
    }

    @Override
    @Transactional(propagation = Propagation.REQUIRED)
    public int insertSelective(ProjectSummaryDoc record, String uploadFiles, String deletedFiles) {
        //插入数据成功之后，返回的条数
        int resultCount = 0;
        //保存业务数据
        resultCount = projectSummaryDocMapper.insertSelective(record);
        //更新的附件不为空的情况
        if (uploadFiles != null && !uploadFiles.equals("")) {
            //强制转换成集合
            List<File> listFiles = JSON.parseArray(uploadFiles, File.class);
            if (listFiles != null && listFiles.size() > 0) {
                //重新设置附件属性
                String pId = record.getProjectId();
                int len = listFiles.size();
                for (int i = 0; i < len; i++) {
                    File _file = listFiles.get(i);
                    //设置主键
                    _file.setFileId(UniqueUtil.uuid());
                    //设置业务数据id
                    _file.setBusinessId(pId);
                    _file.setFileType(FileTypeEnum.getCode(_file.getExt()));
                }
                resultCount += iamFileMapper.insert(listFiles);
            }
        }
        return resultCount;
    }

    @Override
    public ProjectSummaryDoc selectByPrimaryKey(String projectId) {
        return projectSummaryDocMapper.selectByPrimaryKey(projectId);
    }

    @Override
    public int updateByPrimaryKeySelective(ProjectSummaryDoc record) {
        return projectSummaryDocMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    @Transactional(propagation = Propagation.REQUIRED)
    public int updateByPrimaryKeySelective(ProjectSummaryDoc record, String uploadFiles, String deletedFiles) {
        {
            //插入数据成功之后，返回的条数
            int resultCount = 0;
            resultCount += projectSummaryDocMapper.updateByPrimaryKeySelective(record);
            //更新附件信息
            if (uploadFiles != null && !uploadFiles.equals("")) {
                //强制转换成集合
                List<File> listFiles = JSON.parseArray(uploadFiles, File.class);
                if (listFiles != null && listFiles.size() > 0) {
                    //重新设置附件属性
                    String pId = record.getProjectId();
                    int len = listFiles.size();
                    for (int i = 0; i < len; i++) {
                        File _file = listFiles.get(i);
                        //设置主键
                        _file.setFileId(UniqueUtil.uuid());
                        //设置业务数据id
                        _file.setBusinessId(pId);
                        _file.setFileType(FileTypeEnum.getCode(_file.getExt()));
                    }
                    resultCount += iamFileMapper.insert(listFiles);
                }
            }
            //需要删除的附件信息
            if (deletedFiles != null && !deletedFiles.equals("")) {
                //强制转换成集合
                List<File> listFiles = JSON.parseArray(deletedFiles, File.class);
                if (listFiles != null && listFiles.size() > 0) {
                    int len = listFiles.size();
                    for (int i = 0; i < len; i++) {
                        File _file = listFiles.get(i);
                        iamFileMapper.deleteByPrimaryKey(_file.getFileId());
                    }
                }
            }
            return resultCount;
        }
    }

    @Override
    public int updateByPrimaryKey(ProjectSummaryDoc record) {
        return projectSummaryDocMapper.updateByPrimaryKey(record);
    }

    @Override
    public JSONObject list(BootstrapSearchBean bootstrapSearchBean) {
        JSONObject jsonObject = new JSONObject();
        bootstrapSearchBean.setLimit( bootstrapSearchBean.getLimit() == null ? 10 : bootstrapSearchBean.getLimit() );
        bootstrapSearchBean.setOffset( bootstrapSearchBean.getOffset() == null ? 0 : bootstrapSearchBean.getOffset() );
        //bootstrapSearchBean.setFilterMap(BootstrapUtil.filterStringToMap(bootstrapSearchBean.getFilter()));
        jsonObject.put("total",projectSummaryDocMapper.queryCount(bootstrapSearchBean));
        jsonObject.put("rows", JSON.toJSON(projectSummaryDocMapper.queryList(bootstrapSearchBean)));
        return jsonObject;
    }
}
